package cn.pro.service;

import cn.pro.api.IProRoleService;
import cn.pro.dao.ProRoleAccessDao;
import cn.pro.dao.ProRoleDao;
import cn.pro.entity.ProRole;
import cn.pro.entity.ProRoleAccess;
import cn.pro.entity.ProUserRole;
import cn.pro.entity.vo.ProRoleVo;
import cn.pro.entity.vo.ProUserVo;
import cn.pro.utils.CheckMsg;
import cn.pro.utils.ObjectUtils;
import cn.pro.utils.PageData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

@Service
public class ProRoleService implements IProRoleService {
    @Autowired
    private ProRoleDao proRoleDao;
    @Autowired
    private ProRoleAccessDao proRoleAccessDao;
    @Override
    public CheckMsg create(ProRole proRole) {
        proRoleDao.insert(proRole);
        if (!ObjectUtils.objectCheckIsNull(proRole.getName())){
            CheckMsg.fail().setMesage("用户添加失败");
        }
        return CheckMsg.success().setMesage("用户添加成功");
    }

    @Override
    public PageData<ProRoleVo> selectList(ProRole proRole) {
        List<ProRoleVo> proRelos = proRoleDao.selectList(proRole);
        return new PageData<ProRoleVo>().startPage(proRelos, proRole.getPageIndex(), proRole.getPageSize());
    }

    @Override
    public CheckMsg delete(String roleId) {
        ProRoleVo proRoleVo = proRoleDao.selectById(roleId);
        if (!org.springframework.util.ObjectUtils.isEmpty(proRoleVo)){
            proRoleDao.delById(roleId);
            return CheckMsg.success().setMesage("角色删除成功");
        }else {
            return CheckMsg.fail().setMesage("角色删除失败");
        }
    }

    @Override
    public CheckMsg updateRole(ProRole proRole) {
        ProRoleVo roleVo = proRoleDao.selectById(proRole.getId());
        if (org.springframework.util.ObjectUtils.isEmpty(roleVo)){
            proRole.setUpdateTime(new Date());
            proRoleDao.updateById(proRole);
        }
        if (!ObjectUtils.objectCheckIsNull(proRole.getName())){
            CheckMsg.fail().setMesage("角色修改失败");
        }
        return CheckMsg.success().setMesage("角色修改成功");
    }

    @Override
    public ProRoleVo selectById(String roleId) {
        ProRoleVo proRoleVo = proRoleDao.selectById(roleId);
        System.out.println("对象："+proRoleVo.toString());
        if (org.springframework.util.ObjectUtils.isEmpty(proRoleVo)){
            return null;
        }
        return proRoleVo;
    }

    @Override
    public CheckMsg bindAccess(String roleId, List<String> accessIds) {
        ProRoleVo vo = proRoleDao.selectById(roleId);
        if (!org.springframework.util.ObjectUtils.isEmpty(vo)) {
            for (String aid : accessIds) {
                ProRoleAccess roleAccess = new ProRoleAccess();
                roleAccess.setId(ObjectUtils.couponCodeTwo("a"));
                roleAccess.setAccessId(aid);
                roleAccess.setRoleId(roleId);
                roleAccess.setCreateTime(new Date());
                roleAccess.setUpdateTime(new Date());
                proRoleAccessDao.save(roleAccess);
            }
            return CheckMsg.success().setMesage("绑定成功");
        }
        return CheckMsg.fail().setMesage("绑定失败");
    }
}
